<?php

namespace App\Modules\LuckDraw\LuckDraw;

interface LuckDrawInterface {
    public function run(int $num = 0):?array;//开始执行抽奖

    public function check(): array; //检查是否可以正常抽奖
    public function getLuckId():int; //活动当前活动id
    public function getTag():string; //活动当前活动tag
    public function getStrategyPool():object; //活动策略
    public function isStart(): bool;//检查活动是否开启
    public function getStart(); //获取活动开始时间
    public function getEnd(); //获取活动结束时间
    public function getPrice(): int;//获取抽奖价格
    public function hasExp():bool; //获取活动是否包含经验值
    public function getExpName():string; //获取活动经验值的名字
    public function expEnough(): bool; //判断用户是否满足足够抽奖
    public function getExpNeed(): int; //获取参与抽奖最低的经验值
    public function getExpAdd():int;//获取参数一次抽奖增加多少经验值
    public function getPropName(): string; //获取活动使用的道具
    public function rule():?string;//获取当前抽奖规则
    public function awardList():?array;//获取当前用户奖品列表

    public function exchange(int $num) : array;//兑换道具
    public function addProp(int $num, int $type):bool; //增加道具
    public function deductProp(int $num, int $type):bool; //扣除抽奖道具
    public function getGloryAdd(): int; //增加抽奖一次获得的荣耀令
    public function addGlory(?int $num); //增加荣耀令
    public function saveAwards($awards): bool;//保存奖品到用户背包
    public function awardsDetail($awards); //获取奖品的详情比如图片资源等
    public function mergeAwards($awards1=[], $awards2=[]); //合并奖品列表
    public function sendMsg(?array $data = null); //发送一些消息
    /**
     *中奖记录相关
     * */
    public function ranking(int $top): ?array; //排行榜
    public function latestAwards(int $top): array; //获取中奖记录
    public function record(int $page_num = 0, int $page_size = 20): array;//获取用户中奖记录
    public function getRankingCache(); //获取排行榜缓存
    public function setRankingCache(string $data); //设置排行榜缓存
    public function marquee(int $top = 50):?array;
    public function banlance():?array; //获取当前用户资产信息

    /**
     * 后台更新奖池相关
     * */
    //更新奖池后 更新抽奖策略数据
    public function updateStrategyPoolByPoolData(array $poolData);
    //清楚所有抽奖奖池数据
    public function clearCacheByPoolData(int $id);
}